package cn.caskm.souvenirshopsystem.service;

import cn.caskm.souvenirshopsystem.domain.Result;
import cn.caskm.souvenirshopsystem.domain.dto.LoginFormDTO;
import cn.caskm.souvenirshopsystem.domain.dto.PageDTO;
import cn.caskm.souvenirshopsystem.domain.dto.StudentUserRegisterDTO;
import cn.caskm.souvenirshopsystem.domain.dto.StudentUserUpdateDTO;
import cn.caskm.souvenirshopsystem.domain.po.StudentUser;
import cn.caskm.souvenirshopsystem.domain.query.StudentUserQuery;
import cn.caskm.souvenirshopsystem.domain.vo.StudentUserVO;
import cn.caskm.souvenirshopsystem.enums.StatusEnum;
import com.baomidou.mybatisplus.extension.service.IService;

public interface StudentUserService extends IService<StudentUser> {

    /**
     * 分页查询学生用户
     */
    Result<PageDTO<StudentUserVO>> page(StudentUserQuery query);

    /**
     * 学生用户注册
     */
    Result<Void> register(StudentUserRegisterDTO registerDTO);

    /**
     * 更新学生用户信息
     */
    Result<Void> updateStudentUser(StudentUserUpdateDTO updateDTO);

    /**
     * 获取学生用户详情
     */
    Result<StudentUserVO> getStudentUserDetail(Integer id);

    /**
     * 根据学号查询学生用户
     */
    Result<StudentUserVO> getByStudentNo(String sno);

    /**
     * 更新学生用户状态
     */
    Result<Void> updateStatus(Integer id, StatusEnum status);

    /**
     * 删除学生用户
     */
    Result<Void> deleteStudentUser(Integer id);

    /**
     * 升级/降级VIP等级
     */
    Result<Void> updateVipLevel(Integer id, Integer vipLevel);

    /**
     * 登录
     */
    Result<String> login(LoginFormDTO body);

    /**
     * 修改密码
     */
    Result<Void> changePassword(Integer userId, String oldPassword, String newPassword, String confirmPassword);

}
